package modelo;


import utilitarios.DireccionAbajo;
import utilitarios.DireccionArriba;
import utilitarios.DireccionDerecha;
import utilitarios.DireccionIzquierda;

public class EstrategiaPerseguirTanqueAlgo implements EstrategiaAtaque {
	
	private DireccionDerecha derecha = new DireccionDerecha();
	private DireccionIzquierda izquierda = new DireccionIzquierda();
	private DireccionAbajo abajo = new DireccionAbajo();
	private DireccionArriba arriba = new DireccionArriba();
	
	@Override
    public void moverSegunEstrategia(TanqueEnemigo tanque) {
		
		if (tanque.getEnemigo().debeMorir()) {
			tanque.detener();
		}
		
		double distanciaEnX = Math.abs(tanque.getX() - tanque.getEnemigo().getX());
		double distanciaEnY = Math.abs(tanque.getY() - tanque.getEnemigo().getY());
		
		
		// Si la distancia en X es chica, me acerco por X
		if (distanciaEnX < distanciaEnY) {
			
			if (distanciaEnX == 0) {
				if (tanque.getY() < tanque.getEnemigo().getY()) {
					tanque.girar(arriba);
					}
				else {
					tanque.girar(abajo);
					}
			}
									
			else if (tanque.getPosicion().getCoordX() < tanque.getEnemigo().getPosicion().getCoordX()) {
				tanque.girar(derecha);
			}
			else {
				tanque.girar(izquierda);
			}
		}
		
		// Si la distancia en Y es chica, me acerco por Y
		else if (distanciaEnY < distanciaEnX) {
			
			if (distanciaEnY == 0) {
				if ( tanque.getX() < tanque.getEnemigo().getX()) {
					tanque.girar(derecha);
					}
				else {
					tanque.girar(izquierda);
					}
			}
			else if (tanque.getY() < tanque.getEnemigo().getY()) {
				tanque.girar(arriba);
			}
			else {
				tanque.girar(abajo);
			}
		}

		// Si la distancia en X es igual a la de Y, elijo al azar
		else {
			if ( tanque.getX() < tanque.getEnemigo().getX()) {
				tanque.girar(derecha);
				}
			else if (tanque.getX() > tanque.getEnemigo().getX()) {
				tanque.girar(izquierda);
				}
			else if (tanque.getY() < tanque.getEnemigo().getY()) {
				tanque.girar(arriba);
				}
			else {
				tanque.girar(abajo);
				}

		}
		tanque.moverEnDireccion(tanque.getDireccion());

	}
}